package com.sunni.controller;

import com.sunni.entity.Account;
import com.sunni.mapper.AccountMapper;
import org.apache.ibatis.io.ResolverUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;

public class _02_代理开发 {
    public static void main(String[] args) {

// 1. 读取mybatis核心文件
        InputStream inputStream =
                ResolverUtil.Test.class.getClassLoader().getResourceAsStream("config.xml");

// 2.创建SqlSessionFactoryBuilder();
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

//  3.拿到sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);

//  4.开启SqlSession对话
        SqlSession sqlSession = sqlSessionFactory.openSession();

// 5. SqlSession 获取 接口 get
        AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);

//  6.accountMapper ：mapper对象执行 mapper层方法

//        增
//        Integer result = accountMapper.insert(new Account("娇喘哥", "123", 40));

//        删
//        Integer result = accountMapper.delete(2);

//        改（先查, 后改。[把查到的对象用set方法改了，在把这个对象用修改方法传回去  数据库修改 本来就是把所有的数据全改一遍嘛]）
        Account account = accountMapper.findById(3);
//        account.setUsername("juzuo");
//        account.setPassword("111");
//        account.setAge(61);
//        Integer result = accountMapper.update(account);
        System.out.println(account);

//      查
//        List<Account> accountList = accountMapper.findAll(); //查全部
//        for (Account account : accountList) {
//            System.out.println(account);
//        }

// 7.提交sql会话 （针对 增、删、改，能让数据库发生变化的使用commit）
        sqlSession.commit();

//  8.关闭sql会话
        sqlSession.close();
    }
}
